import HTTP from '@/libs/http'

class ExamApi extends HTTP {
  /**
   * @description: 试卷列表
   * @author lsr
   * @date 2021.08.16
   * @param {String} type 类型 0：模拟  1：在线
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  list({ type, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/exam/paperlist',
      params: {
        type,
        recordSize,
        pageSize
      }
    })
  }

  /**
   * @description: 试卷题目
   * @author lsr
   * @date 2021.08.16
   * @param {String} code 试卷编码
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  questionList({ examCode, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/exam/questionlist',
      params: {
        examCode,
        recordSize,
        pageSize
      }
    })
  }

  /**
   * @description: 保存答题
   * @author lsr
   * @date 2021.08.17
   * @param {String} examCode 试卷编码
   * @param {String} list 试卷答题
   */
  save({ examCode, list }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/learnTest/exam/papersave',
      data: { examCode, list }
    })
  }
}

class MyExamApi extends HTTP {
  /**
   * @description: 试卷列表
   * @author lsr
   * @date 2021.08.16
   * @param {String} type 类型 0：模拟  1：在线
   * @param {String} title 试卷标题
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  list({ type, title, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/my/mypaperlist',
      params: {
        type,
        title,
        recordSize,
        pageSize
      }
    })
  }

  /**
   * @description: 试卷题目
   * @author lsr
   * @date 2021.08.16
   * @param {String} code 试卷编码
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  questionList({ examCode, recordSize, pageSize }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/my/questionlist',
      params: {
        examCode,
        recordSize,
        pageSize
      }
    })
  }
}

class QuestionBankApi extends HTTP {
  /**
   * @description: 智能刷题列表
   * @author szk
   * @date 2021.08.13
   * @param {String} subjectTypeCode 课程类型编码
   * @param {Number} pageSize 每页条数
   * @param {Number} recordSize 记录页数
   */
  list({ pageSize, recordSize, subjectTypeCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/questionBank/list',
      params: { pageSize, recordSize, subjectTypeCode }
    })
  }

  /**
   * @description: 我的错题列表
   * @author szk
   * @date 2021.08.16
   * @param {String} subjectTypeCode 课程类型编码
   * @param {Number} pageSize 每页条数
   * @param {Number} recordSize 记录页数
   */
  errorList({ pageSize, recordSize, subjectTypeCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/questionBank/errorlist',
      params: { pageSize, recordSize, subjectTypeCode }
    })
  }

  /**
   * @description: 错题数量
   * @author szk
   * @date 2021.08.13
   */
  count() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/questionBank/errorcount'
    })
  }

  /**
   *
   * @description: 保存
   * @author szk
   * @date 2021.08.16
   * @param {String} answer 答案
   * @param {String} questionCode 题目编码
   * @param {String} version 题目版本
   * @param {String} isErrorListSave 是否是错题列表（0：智能刷题列表或者错题列表并且没有开启错题答对移除  1：错题列表并且开启错题答对移除）
   */
  save({ answer, questionCode, version, isErrorListSave }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/learnTest/questionBank/save',
      data: { answer, questionCode, version, isErrorListSave }
    })
  }
}

class Course extends HTTP {
  /**
   * @description: 学习首页banner列表
   * @author llx
   * @date 2021.08.13
   */
  bannerList() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/course/bannerlist',
      params: {}
    })
  }

  /**
   * @description: 课程类型列表
   * @author llx
   * @date 2021.08.13
   */
  typeList() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/course/typelist',
      params: {}
    })
  }

  /**
   * @description: 课程列表
   * @author llx
   * @date 2021.08.13
   * @param {String} subjectTypeCode 类型编码
   * @param {String} subjectName 课程名称
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  courseList({ subjectTypeCode, recordSize, pageSize, subjectName }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/course/list',
      params: { subjectTypeCode, recordSize, pageSize, subjectName }
    })
  }

  /**
   * @description: 课程详情
   * @author llx
   * @date 2021.08.13
   * @param {String} subjectCode  课程编码
   */
  courseDetail({ subjectCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/course/detail',
      params: { subjectCode }
    })
  }

  /**
   * @description: 课程小节详情
   * @author llx
   * @date 2021.08.13
   * @param {String} chapterCode  小节编码
   */
  chapterDetail({ chapterCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/course/contentdetail',
      params: { chapterCode }
    })
  }

  /**
   * @description: 我的课程、收藏列表
   * @author llx
   * @date 2021.08.13
   * @param {String} subjectTypeCode 类型编码
   * @param {String} subjectName 课程名称
   * @param {String} learnedType 1.课程 2.收藏
   * @param {Int} recordSize 开始下标（第一条数据的下标为0）
   * @param {Int} pageSize 每页显示条数
   */
  myList({ subjectTypeCode, recordSize, pageSize, subjectName, learnedType }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/learnTest/my/mycourselist',
      params: { subjectTypeCode, recordSize, pageSize, subjectName, learnedType }
    })
  }

  /**
   * @description: 我的课程保存
   * @author llx
   * @date 2021.08.13
   * @param {String} subjectCode  课程编码
   * @param {String} chapterCode  小节编码
   * @param {String} chapterCatalogueCode   章节编码
   */
  courseSave({ subjectCode, chapterCode, chapterCatalogueCode }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/learnTest/my/coursesave',
      data: { subjectCode, chapterCode, chapterCatalogueCode }
    })
  }

  /**
   * @description: 我的章节保存
   * @author llx
   * @date 2021.08.13
   * @param {String} chapterCode  小节编码
   * @param {String} chapterCatalogueCode   章节编码
   * @param {String} myCourseCode   课程code
   */
  contentsave({ chapterCode, chapterCatalogueCode, myCourseCode }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/learnTest/my/contentsave',
      data: { chapterCode, chapterCatalogueCode, myCourseCode }
    })
  }

  /**
   * @description: 收藏
   * @author llx
   * @date 2021.08.14
   * @param {String} subjectCode  课程编码
   */
  collectsave({ subjectCode }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/learnTest/my/collectsave',
      data: { subjectCode }
    })
  }

  /**
   * @description: 取消收藏
   * @author llx
   * @date 2021.08.14
   * @param {String} code  课程编码
   */
  collectcancel({ code }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/learnTest/my/collectcancel',
      data: { code }
    })
  }

  /**
   * @description: 我的学习反馈
   * @author llx
   * @date 2021.08.14
   * @param {String} code  课程编码
   * @param {String} feedback 反馈内容
   */
  feedback({ code, feedback }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/learnTest/my/feedback',
      data: { code, feedback }
    })
  }
}

class LearnTestApi {
  constructor() {
    this.Exam = new ExamApi()
    this.MyExam = new MyExamApi()
    this.QuestionBank = new QuestionBankApi()
    this.Course = new Course()
  }
}

const LearnTest = new LearnTestApi()

export default LearnTest
